import 'element-ui/lib/theme-chalk/index.css';
import ElementUI,{Table} from 'element-ui'
import axios from 'axios'
import 'resize-observer-polyfill'
import Vue from 'vue'
import App from './App.vue'
import router from './router'




//从elementui中引出Table

//注意，这里是处理table宽度报错的问题
const fixElTableErr = table => {
  const oldResizeListener = table.methods.resizeListener
  table.methods.resizeListener = function () {
    window.requestAnimationFrame(oldResizeListener.bind(this))
  }
}

// ！！！！一定要在Vue.use之前执行此函数
fixElTableErr(Table)
// Vue.config.productionTip = false
Vue.use(ElementUI);
// // 禁用 ResizeObserver API
// window.ResizeObserver = undefined
// Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')




// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 从本地存储中获取 token
    const token = localStorage.getItem('token')
    // 如果 token 存在，则添加到请求头中
    if (token) {
      config.headers.token= `${token}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
axios.interceptors.response.use(
  response => {
    return response
  },
  error => {
    // 如果响应状态码为 401（未授权），则清除 token 并跳转到登录页面
    if (error.response.status === 401) {
      localStorage.removeItem('token')
      router.push('/login')
    }
    return Promise.reject(error)
  }
)
// src/utils/auth.js
export function getToken() {
  return localStorage.getItem('token');
}
Vue.prototype.$getToken = getToken;
Vue.prototype.$getToken = getToken;
Vue.prototype.$http = axios

// 定义过滤器
Vue.filter('truncate', function(value) {
  if (!value) return '';
  value = value.toString(); // 确保 value 是字符串
  if (value.length > 500) {
    return value.substring(0, 500) + '...';
  } else {
    return value;
  }
});

router.beforeEach((to, from, next) => {
  if (to.meta.title) {
    document.title = to.meta.title;
  }
  next(); // 确保调用 next() 来继续导航
});

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')





